import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent))  # 将项目根目录加入Python路径
from llm_func.client_test import chat_with_llm
from basic import get_basic_info


# 生成文本
def generate_analysis_report():
    # 从get_basic_info获取所有基础数据
    basic_data = get_basic_info()
    
    # 解包需要使用的变量
    enterpriseName = basic_data['enterpriseName']
    industry_name = basic_data['industry_name']
    company_translation = basic_data['company_translation']
    business_products = basic_data['business_products']
    customer = basic_data['customer']
    net_profit = basic_data['net_profit']
    operating_income = basic_data['operating_income']
    operating_costs = basic_data['operating_costs']
    pay_taxes = basic_data['pay_taxes']
    total_industrial = basic_data['total_industrial']
    time_year = basic_data['time_year']
    subsidy_details_str = basic_data['subsidy_details_str']
    staff_total = basic_data['staff_total']
    social_security = basic_data['social_security']
    bachelor_total = basic_data['bachelor_total']
    college_graduates = basic_data['college_graduates']
    completableFuture1 = basic_data['completableFuture1']
    completableFuture2 = basic_data['completableFuture2']
    completableFuture3 = basic_data['completableFuture3']
    completableFuture5 = basic_data['completableFuture5']
    completableFuture6 = basic_data['completableFuture6']
    completableFuture7 = basic_data['completableFuture7']
   
   
    content = f"""
    请从以下文本中识别并提取对应的六个评估维度，返回一个结构化 JSON 数组，每个元素包含 `title` 和 `content` 字段，title 为如下六个标题之一：
    ["综合评估", "一、经济贡献", "二、经营能力评估", "三、创新能力评估", "四、成长能力评估", "五、企业风险评估"]。

    要求：
    1. 每段 content 限制在 100 字左右，保持语言专业简明。
    2. 如果某个维度在原文中缺失，请自动基于上下文补全或保持为空。

    企业数据如下：

    【企业基本信息】
    - 企业名称：{enterpriseName}
    - 所属行业：{industry_name}
    - 公司简介：{company_translation}
    - 业务和产品：{business_products}
    - 主要客户：{customer}

    【企业财务信息】
    - 净利润：{net_profit}
    - 营业收入（亿元）：{operating_income}
    - 营业成本/研发投入（亿元）：{operating_costs}
    - 纳税（亿元）：{pay_taxes}
    - 工业总产值：{total_industrial}
    - 数据年份：{time_year}

    【企业投资情况】
    {subsidy_details_str}

    【企业就业情况】
    - 职工总数：{staff_total}
    - 社保参保人数：{social_security}
    - 本科学历人数：{bachelor_total}
    - 新增高校毕业人数：{college_graduates}

    【企业风险情况】
    - 荣誉信息：{completableFuture1}
    - 严重失信：{completableFuture2}
    - 经营异常：{completableFuture3}
    - 行政处罚：{completableFuture5}
    - 行政许可：{completableFuture6}
    - 涉诉涉裁：{completableFuture7}


    【企业成长能力】
    专利、著作、软著
    """
    return content


# 解析输出格式——分数
def analysis_report_json():
    try:
        content = generate_analysis_report()
        messages = [{"role": "user", "content": content}]
        response = chat_with_llm(messages, stream=True)
        print(response)

        # 映射关系（中文字段 -> radar_chart字段）
        field_mapping = {
            "综合评估": "evaluation",
            "经济贡献": "one_economic",
            "经营能力评估": "two_business",
            "创新能力评估": "three_innovation",
            "成长能力评估": "four_growth",
            "企业风险评估":"five_enterprise"
        }

        # 提取JSON内容并生成 radar_chart
        # 使用正则表达式匹配第一个JSON对象
        import re
        import json
        
        # 查找第一个JSON结构
        json_match = re.search(r'\{[\s\S]*?\}', response)
        if not json_match:
            raise ValueError("未找到有效的JSON内容")
            
        json_str = json_match.group()
        report_data = json.loads(json_str)
        data = {
            field_mapping[key]: report_data[key]
            for key in field_mapping
            if key in report_data
        }

        return data

    except Exception as e:
        raise ValueError(f"输出格式不正确: {e},无法解析")


if __name__ == "__main__":
    out = analysis_report_json()
    print(out)
